[실기] 공부법 & 요약집

NOTE

정보처리기사 실기 공부법(강의·암기 팁)과 단원별 요약 자료 모음.

공부법

  1. 알고리즘 ( 유튜브 강의) -중요

    정보처리 실기_알고리즘01강_알고리즘의 개념

  2. 데이터베이스 (유튜브 강의) -중요

    정보처리 실기_데이터베이스09강_SQL(DDL, DCL)

  3. 업무프로세스, 신기술 동향, 전산영어 ⇒ 퀴즐렛으로 암기


요약


1. 소프트웨어 설계 및 개발 방법론

개발 방법론

  • 구조적 방법론: 기능을 분할하여 개발. (도구: 나씨-슈나이더만 차트 - 도형식, 제어 논리 구조 표현)
  • 애자일(Agile) 방법론: 사람 중심, 변화에 유연함.
    • XP (eXtreme Programming): 메타포어(공통 이름 체계), 리팩토링, 짝 프로그래밍.
    • Scrum: 매일 정해진 시간 짧은 회의, 스프린트(반복 주기).
    • Lean: 도요타 생산 방식(JIT)을 적용, 낭비 제거.
  • 비용 산정 모델
    • 하향식: 델파이 기법 (전문가 합의).
    • 상향식: COCOMO (유형: Organic, Semi-detached, Embedded).
  • 일정 관리
    • CPM (주공정법): 가장 오래 걸리는 경로(임계 경로) 계산.
    • PERT: 3점 추정 (비관치, 중간치, 낙관치) 사용.

객체지향 및 UML

  • UML: 객체지향 산출물의 명세화/시각화/문서화 모델링 언어.
    • 스테레오 타입: << >> (길러멧) 기호 사용.
  • 객체지향 관계
    • 집단화 (Aggregation): is part of (부분)
    • 일반화 (Generalization): is a (상속)
    • 분류화 (Classification): is instance of
    • 연관화 (Association): is member of
  • 다형성 (Polymorphism): 각 객체가 고유한 방법으로 응답하는 능력.

객체지향 설계 원칙 (SOLID)

  • SRP (단일 책임): 하나의 클래스는 하나의 책임만 가짐.
  • OCP (개방-폐쇄): 확장은 열고 수정은 닫음.
  • LSP (리스코프 치환): 자식은 부모를 대체 가능해야 함.
  • ISP (인터페이스 분리): 불필요한 인터페이스 의존 금지.
  • DIP (의존 역전): 구체적인 것이 아닌 추상적인 것에 의존.

디자인 패턴 (GoF)

  • 생성 (Creational): 추빌팩프싱 (추상 팩토리, 빌더, 팩토리 메서드, 프로토타입, 싱글톤)
  • 구조 (Structural): 어브컴데퍼플프 (어댑터, 브리지, 컴포지트, 데코레이터, 퍼사드, 플라이웨이트, 프록시)
  • 행위 (Behavioral): 나머지 (옵저버, 전략, 템플릿 메서드 등)

모듈 품질 (암기 필수)

  • 결합도 (Coupling): 낮을수록 좋음.
    • 순서 (높음 → 낮음): 내공외제스자 (내용 > 공통 > 외부 > 제어 > 스탬프 > 자료)
  • 응집도 (Cohesion): 높을수록 좋음.
    • 순서 (낮음 → 높음): 우논시절통순기 (우연 < 논리 < 시간 < 절차 < 통신 < 순차 < 기능)

2. 구현 및 테스트 (Implementation & Test)

공통 모듈 구현

  • 절차: DTO/VO → SQL → DAO → Service → Controller → View

  • 데이터 객체 구분

    DTO (Data Transfer Object): Getter/Setter 보유, 데이터 전송용 (가변).VO (Value Object): Getter만 보유, Read-only (불변).DAO (Data Access Object): DB 접근 인터페이스.

테스트 기법

  • V-모델 검증 단계
    • 검증 (Verification): 개발자 기준 (“제품을 올바르게 만들고 있는가?”)
    • 확인 (Validation): 사용자 기준 (“올바른 제품을 만들었는가?”)
  • 화이트박스 테스트 (내부 로직): 기초 경로 검사, 제어 구조 검사(조건, 루프), 분기/조건 검증.
  • 블랙박스 테스트 (기능): 동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사.
  • 통합 테스트
    • 하향식: 스텁 (Stub) 사용 (가짜 하위 모듈).
    • 상향식: 드라이버 (Driver) 사용 (가짜 상위 모듈).
  • 인수 테스트: 알파(개발자 환경, 사용자+개발자), 베타(실제 환경, 사용자 단독).

테스트 이론 및 용어

  • 파레토 법칙: 20%의 모듈에서 80%의 오류 발생.
  • 살충제 패러독스: 동일한 테스트 반복 시 결함 발견 불가.
  • 오류-부재의 궤변: 결함이 없어도 사용자 요구를 만족 못 하면 품질 나쁨.

복잡도

  • 시간 복잡도: 빅오(Big-O) 표기법 사용.
  • 순환 복잡도 (Cyclomatic Complexity): (화살표 수 - 노드 수 + 2).

형상 관리 및 도구

  • CVS: 서버-클라이언트, 동시 접근 가능.
  • SVN: 서버-클라이언트, 하나의 서버 소스 관리.
  • RCS: 파일 잠금(1인 수정), 동시 접속 불가.
  • BitKeeper: 중앙 통제, 대규모 전용.
  • Git: 분산형, 속도 중점.
  • Clear Case: 복수 서버/클라이언트.

3. 인터페이스 및 연계 (Interface Integration)

연계 기술

  • 직접 연계: DB Link, API/Open API, JDBC, 하이퍼링크.
  • 간접 연계: EAI, ESB, Socket.

EAI (Enterprise Application Integration)

  • 기업 내 앱 통합 솔루션.
  • 구성요소: 어댑터, 브로커, 메시지 큐, 비즈니스 워크플로우.
  • 구축 유형:
    • Point-to-Point: 1:1 연결.
    • Hub & Spoke: 중앙 허브 경유.
    • Message Bus: 미들웨어 버스 사용.
    • Hybrid: 허브 + 버스.

웹 서비스 및 ESB

  • ESB (Enterprise Service Bus): 느슨한 결합, 서비스 중심 통합.
  • 웹 서비스 3요소:
    • SOAP: XML 기반 메시지 교환 프로토콜 (HTTP/HTTPS 등 이용).
    • WSDL: 웹 서비스 기술 언어 (명세서).
    • UDDI: WSDL 등록/검색 저장소.

인터페이스 구현 기술

  • 데이터 포맷:
    • JSON: Key-Value 쌍, AJAX에서 주로 사용, XML 대체.
    • XML: HTML 단점 보완, 다목적 마크업 언어.
  • AJAX: JS 사용, 비동기 데이터 교환.
  • REST: HTTP 메서드(POST, GET, PUT, DELETE) 활용.
  • 보안:
    • IPSec: 네트워크 계층 보안 (AH:인증, ESP:암호화).
    • SSL/TLS: 전송 계층 보안, 웹 데이터 암호화.
    • S-HTTP: 네트워크 트래픽 암호화.

테스트/감시 도구

  • 프레임워크: xUnit, STAF, FitNesse, NTAF, Selenium(웹), Watir(루비).
  • APM (모니터링): Scouter, 제니퍼(Jennifer).

4. 운영체제 (OS)

프로세스 관리

  • 상태 전이: 제출 → 접수 → 준비(Ready) → 실행(Run/Dispatch) → 대기(Wait) → 종료.
    • Wake up: 대기 → 준비.
    • Spooling: 입출력 데이터를 디스크에 잠시 저장.
  • PCB (Process Control Block): 프로세스 정보를 저장하는 곳.
  • 스레싱 (Thrashing): 페이지 교체 시간이 실행 시간보다 많아지는 현상.

스케줄링

  • 비선점 (뺏기 불가): FCFS, SJF, HRN.

    HRN 우선순위: (대기시간 + 서비스시간) / 서비스시간 (값이 클수록 우선)

  • 선점 (뺏기 가능): Round Robin, SRT, 다단계 큐.

페이지 교체 알고리즘

  • OPT: 앞으로 가장 오랫동안 사용 안 할 페이지 (이상적).
  • FIFO: 먼저 들어온 순서.
  • LRU: 가장 오랫동안 사용하지 않은(과거) 페이지.
  • LFU: 사용 빈도가 적은 페이지.
  • NUR: 최근에 사용하지 않은 페이지 (참조 비트 사용).
  • SCR: FIFO 단점 보완 (한 번 더 기회 부여).

교착상태 (Deadlock)

  • 4대 조건: 상호배제, 비선점, 환형 대기, 점유와 대기.
  • 해결 기법: 예방, 회피(은행원 알고리즘), 발견, 회복.

5. 데이터베이스 (Database)

트랜잭션 및 회복

  • 회복 기법
    • REDO: 완료된 작업 재수행.
    • UNDO: 실패/취소된 작업 원상복구.
    • 연기 갱신: 커밋 전까지 기록만 함 (REDO만 가능).
    • 즉각 갱신: 즉시 DB 반영 (REDO, UNDO 모두 가능).
    • 타임스탬프: 시간표 부여하여 순서대로 수행.

관계 데이터 모델

  • 관계 대수:
    • Select(): 조건 만족 튜플.
    • Project(): 특정 속성 추출.
    • Join: 공통 속성 연결.
    • Division: 관련 있는 튜플 반환.
  • 무결성 제약: Restricted(제한), Cascade(연쇄), Set Null(널값 설정).

데이터베이스 관리

  • 파티셔닝: 범위(Range), 해시(Hash), 리스트(List), 컴포지트(Composite).
  • DB 암호화: API, Plug-In, TDE(커널 내장), Hybrid.

신기술 및 빅데이터

  • 빅데이터: HDFS(하둡 파일 시스템), MapReduce(분산 병렬 처리).
  • NoSQL: 스키마 X, 조인 불가, 수평 확장.
  • 시맨틱 웹: 온톨로지(지식베이스) 활용, 기계가 처리 가능한 웹.
  • 데이터 마이닝: 분류(예측), 연관(종속), 연속(시간+연관), 군집화.

6. 보안 (Security)

공격 유형

  • DoS (서비스 거부):
    • SYN Flooding, UDP Flooding.
    • Smurf: ICMP 브로드캐스트.
    • Ping of Death: 거대 패킷 전송.
    • Land Attack: 출발지 IP = 목적지 IP.
    • Tear Drop: 패킷 재조합 오류 유발.
    • Bonk/Boink: 프로토콜 오류 제어.
  • DDoS (분산 서비스 거부): Trinoo, TFN, Stacheldraht.
    • DRDoS: 반사 서버 이용.
  • 애플리케이션 공격:
    • HTTP GET Flooding.
    • Slowloris / Rudy / Slow HTTP Read DoS (지속적 연결 유지).
    • Hulk DoS: URL 지속 변경.
    • Hash DoS: 파라미터 다량 전송.
  • 네트워크 공격:
    • IP Spoofing (IP 위조), ARP Spoofing (MAC 위조).
    • ICMP Redirect, 트로이목마, 백도어.
  • 기타 용어:
    • 스피어피싱(이메일), 큐싱(QR), 봇넷, 웜(자가복제), 악성 봇, 이블 트윈(가짜 핫스팟), 공급망 공격.

보안 구현 및 방어

  • 3대 요소: 기밀성, 무결성, 가용성.
  • 접근 통제 모델:
    • BLP (벨-라파듈라): 기밀성 강조 (No Read Up, No Write Down).
    • Biba: 무결성 강조.
  • 취약점 방어: XSS, CSRF, SQL Injection.
  • 보안 시스템: WIPS(무선 침입 방지), VPN(가상 사설망), UTM(통합 보안), DLP(데이터 유출 방지), DRM(저작권 관리).
  • BCP (비즈니스 연속성 계획): 재해 복구 및 업무 재개 계획.